package com.daoliuhe.scaffold.service;

import com.daoliuhe.scaffold.model.Role;
import com.daoliuhe.scaffold.model.User;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

public interface UserService {

	User getUserByUserName(String userName);

	User getUserByLoginId(String loginId);
	
	Map<String, Object> getPageData(User user);
	
	void saveOrUpdate(User user);
	
	/**
	 * 更新用户，更新不为空的字段
	 * @param user
	 */
	void updateUser(User user);
	
	/**
	 * 批量启用
	 * @param ids
	 */
	void updateBatchEnable(ArrayList<String> ids);
    
    /**
     * 批量禁用
     * @param ids
     */
    void updateBatchDisable(ArrayList<String> ids);
	
	User getUserById(String id);
	
	boolean isRightLoginId(String loginId, String id);
	
	Object selectUser(String param);
	
	/**
	 * 根据工号查询角色集合
	 * @param loginId
	 * @return
	 */
	Set<String> getRolesByUserLoginId(String loginId);

	/**
	 * 根据工号查询角色集合
	 * @param loginId
	 * @return
	 */
	Set<Role> getRolesByLoginId(String loginId);

	/**
	 * 根据工号查询权限集合
	 * @param loginId
	 * @return
	 */
	Set<String> getPermissionsByUserLoginId(String loginId);

	/**
	 * 根据角色集合查询权限集合
	 * @param roles
	 * @return
	 */
	Set<String> getPermissionsByRoles(Set<Role> roles);

	/**
	 * 根据用户id查询用户
	 * @param ids 用户id的字符串，多个用[,]分割
	 * @return
	 */
	List<User> getUsersByIds(String ids);
	
}
